home *** CD-ROM | disk | FTP | other *** search
/ AI Game Programming Wisdom / AIGameProgrammingWisdom.iso / SourceCode / 06 General Architectures / 04 Christian / character.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-10-10  |  2.5 KB  |  105 lines

  1.  
  2. #ifndef _CHARACTER_H_
  3. #define _CHARACTER_H_
  4.  
  5. #include "ieowner.h"
  6. #include "world2d.h"
  7. #include "characterbrainlib.h"
  8. #include "anim.h"
  9.  
  10. enum CA_Ids
  11. {
  12.     CA_LieDown,
  13.     CA_Yawn,
  14.     CA_Rest,
  15.     CA_GetUp,
  16.     CA_Stretch,
  17.     CA_Walk,
  18.     CA_Run,
  19.     CA_Fight,
  20.     CA_Die,
  21.  
  22.     CA_NUM      // keep last
  23. };
  24.  
  25. enum Alignments
  26. {
  27.     A_Dogs,
  28.     A_Cats
  29. };
  30.  
  31. //
  32. // character class, contains common AI executors
  33. // for characters
  34. //
  35. class Character : public IEOwner, public WorldObj
  36. {
  37.  
  38. public:
  39.  
  40.     Character();
  41.  
  42.     virtual void  registerAnims () = 0;
  43.     virtual void  makeBrain () = 0;
  44.  
  45.     virtual const char * getAttack            ( int & damage, float & prepareTime );
  46.     virtual const char * getDamageReact       ( float & time );
  47.  
  48.     void  addRest       ( float rest );
  49.     bool  rested        ();
  50.     void  animStart     ( int id );
  51.     bool  animDone      ();
  52.     void  update        ();
  53.     void  updateAnim    ();
  54.     void  initEnergy    ( float burnRate, float recoveRate );
  55.     void  addEnergy     ( float energy );
  56.     void  burnEnergy    ();
  57.     void  restoreEnergy ();
  58.     float getMaxEnergy  ();
  59.     float getEnergy     ();
  60.     void  setSpeeds     ( float walkSpeed, float runSpeed );
  61.     float getWalkSpeed  ();
  62.     float getRunSpeed   ();
  63.     bool  isEnemy       ( Character * other );
  64.     int   getAlignment  () { return m_alignment; }
  65.     void  setSightRange ( int range ) { m_sightRange = range; }
  66.     int   getSightRange () { return m_sightRange; }
  67.     void  setEnemy      ( Character * other ) { m_enemy = other; }
  68.  
  69.     Character * getEnemy () { return m_enemy; }
  70.  
  71.     void  alertChase     ( Character * other );
  72.     void  alertFight     ( Character * other );
  73.  
  74.     bool  beingChased    () { return m_beingChased; }
  75.     bool  fighting       () { return m_fighting; }
  76.     int   getHealth      () { return m_health; }
  77.     void  setDone        ( bool done ) { m_done = done; }
  78.     bool  getDone        () { return m_done; }
  79.     void  setDamage      ( int damage ) { m_health -= damage; }
  80.  
  81. protected:
  82.  
  83.     float     m_energy;
  84.     float     m_energyBurnRate;
  85.     float     m_energyRecoveryRate;
  86.     float     m_maxEnergy;
  87.     float     m_walkSpeed;
  88.     float     m_runSpeed;
  89.  
  90.     int       m_alignment;
  91.     int       m_sightRange;
  92.     int       m_health;
  93.  
  94.     bool      m_done;  // generic done
  95.  
  96.     Character * m_enemy;
  97.  
  98.     Anim  * m_anims [ CA_NUM ];
  99.     int     m_curAnim;
  100.  
  101.     bool    m_beingChased;
  102.     bool    m_fighting;
  103. };
  104.  
  105. #endif